extends CharacterBody2D

#最大速度
const MAX_SPEED=125
# 加速度平滑处理
const ACCELERATION_SMOOTHING=25

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	
	var movement_vector=get_movement_vector()
	#假设同时按下右键和下键，得到的是（1.1）这样的向量，右下移动量是根号2
	#这会导致斜着走速度更快，所以要将移动向量归一化（normalized）后再使用
	var direction = movement_vector.normalized()
	#速度向量=方向*最大速度
	#velocity=direction*MAX_SPEED
	
	#加速功能实现
	var target_velocity=direction*MAX_SPEED
	
	velocity=velocity.lerp(target_velocity,1-exp(-delta*ACCELERATION_SMOOTHING))
	
	move_and_slide()
	
	
	
	
func get_movement_vector():
	#获取人物移动的初始向量
	#var movement_vector=Vector2.ZERO
	
	#获取x轴移动强度，如果是正数则向右移动，如果是负数向左移动，两部边按下为0不动
	var x_movement=Input.get_action_strength("右移")-Input.get_action_strength("左移")
	#获取y轴移动强度，如果是正数则向下移动，如果是负数向上移动，两部边按下为0不动
	var y_movement=Input.get_action_strength("下移")-Input.get_action_strength("上移")
	
	
	
	return Vector2(x_movement,y_movement)
	
